package com.starmark.gateway.auth.provider.service;


import com.starmark.core.framework.base.BaseService;
import com.starmark.gateway.auth.provider.entity.GatewayAuthResource;
import com.starmark.gateway.auth.provider.vo.GatewayAuthResourceVo;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 系统菜单 服务类
 * </p>
 *
 * @author starmark
 * @since 2019-04-21
 */
public interface IGatewayAuthResourceService extends BaseService<GatewayAuthResource> {

    /**
     * 查找菜单树
     *
     * @param roleIds 参数
     * @return 树列表
     */
    List<GatewayAuthResource> getAuthMenu(Set<String> roleIds);

    /**
     * 获取资源树
     * @param projectCode  工程编码
     * @return 资源树
     */
    List<GatewayAuthResource> getResourceTree(String projectCode);

    /**
     * 保存并更新权限资源数据
     * @param gatewayAuthResourceVo 权限资源数据
     */
   void  saveOrUpdateResource( GatewayAuthResourceVo gatewayAuthResourceVo);



    /**
     * 通过组织ID,查找相关权限资源ID
     *
     * @param orgIds
     * @return
     */
    Set<String> getPermissionIdsByOrgId(List<String> orgIds);


    /**
     * 通过URL,获取相关权限字符
     *
     * @param checkUrl   URL地址
     * @param methodType 方法
     * @return 权限资源数据
     */
    Set<String> getPermissionByUrl(String checkUrl, String methodType);

    /**
     *  删除资源ID
     * @param resourceId 资源ID
     */
    void deleteResource(String resourceId);

    /**
     * 重新加载网关路由配置资源到redis
     * @return 成功返回true
     */
    boolean overload();

}
